Hello.
@zep, this one is for you.
Could you please NOT count inside memory any Pico-8 carts that have CRs or any lines that contain remarks.
This will be beneficial in two ways.
It will encourage coders to use multiple lines for their code with no penalty of adding CRs in them.
And two it will encourage coders to go crazy and REALLY give super-helpful hints, documents, and information on their carts and the functions that run in them.
For instance, this code.
--[[ Apple-Palooza written by dw817 Please consult the website at: http://applepalooza.com for more details regarding this. ]] |
Would in fact take zero bytes of space at all. Only true code like cls()
megaton=1000
and pset(x,y)
would take up your valuable 8192 of tokens and 65535 characters of space.
I am aware that code written like this may not fit neatly into your compressed *.p8.png
code, but saved as a normal text file, *.p8
or even posted online, you could definitely take any code size at all and just skip around the CRs, --
, and `--




Hello.
Two things, really. First off there is this wonderful program written by @pahammond that compresses source-code.
https://pahammond.itch.io/gem-minify
For long variable names it does a great job, changing: apple=25
to _a=25
which I feel could be even smaller with a=25
However it does not seem to compress variables that have 2-letters in them, for instance: te=25
compresses to te=25
.
Yep. No compression at all.
So - either I'm not using the program correctly - or do you know of a Pico-8 minifier that will exhaust the single-character letters a-z for variables before going to 2-characters ?
If you must know I'm working on a useful function for everyone (no file access, no worries) :) yet I want it really compact so it's easy to slip in your own code.
What can I do in this respect ?





Hello.
First off, I am aware that you can poke a string via P8SCII:
@addrnnnn[binstr] poke nnnn bytes to address addr
!addr[binstr] poke all remaining characters to address addr
Yet that is a little unusual for us beginners and I would like to suggest @zep that you add this ability to poke()
so you can have poke(addr,string)
which would take the entire contents of that string and convert every character to a byte and POKE it in the memory location stated.
In return this should also have PEEK thus: string=peek(addr,len)
which would transfer the contents of memory addr
with a length of len
to the string in question.
Bonus for poking arrays and peeking arrays additionally.
poke4(addr,array[])
which would normally take the array which uses 4-bytes per element and stuff that into memory addr
Same with peek array[index]=peek4(addr,len)
However these other two would be nice, poke2(addr,array[]) and array[index]=peek2(addr,len)
where in this case array[] would not contain a decimal value and only return a number from -32768 to 32767.
Hello.
-- clear screen cls() -- remap screen from standard -- 0x6000 to 0x8000. does not -- work. poke(0x5f55,0x80) -- plot a single pixel there. pset(0,0,7) -- should return 7, does not. ?peek(0x8000),0,64 |
I was not aware there was a limitation for poke(0x5f55),mempage
to ONLY work for the regular screen (0x6000) and the spritesheet (0x0000) - no other memory location !
I would like to request, @zep, that the memory chosen for both poke(0x5f54)
and poke(0x5f55)
can be anything at all, especially allowing for 0x8000
0xa000
0xc000
and 0xe000
It would sure help me a lot in my code. All of these in fact: pset(), pget(), line(), rect(), rectfill(), circ(), circfill(), oval(), ovalfill(), cls(), print(), spr(), sspr(), and clip().
Would anyone else like this ability ?


Be aware, ZEP just fixed this. Thanks, Zep !
Hello.

If you click on your user name (see the golden arrow above) and icon that appears in the top-right-hand corner of this website (Lexaloffle), a small menu will appear beneath that.

If you click on Profile
you get a page that shows all your posts and cartridges.

To view just the images of cartridges you've written, click on Cartridges.

And it will show you the cartridges you've written.
OK now here's the problem. If you scroll down a bit:

You will see carts you've not only written yourself but carts you've written on OTHER people's threads.
May I suggest there be an option to list ONLY the carts that you've written yourself - where you are the author of the thread.


Hello.
I would like to request a feature that was available in GFA years ago via bitblt() for bit blitter object.
While you can indeed do SPR() or SSPR() to transfer the entire contents of the SPRITESHEET (0x0000) to the display (0x6000) I would like to add that memcpy() have an added argument.
memcpy(dest,orig,len,transparent)
if transparent is not NIL then it assumes you are transferring pixel data and as such will modify memory as if you were using SPR(). So any colors that have the transparent flag will come into play.
While I know you can use 0x5f54 and 0x5f55, which does not work for map(), see this link for details on that:
https://www.lexaloffle.com/bbs/?tid=50158
Instead of changing the sprite and screen location, it would be far easier to transfer memory with transparency than poke to screen write to and spr() or sspr().
You could layer your screens.
function screen() cls() memcpy(0x6000,0xe000,0x2000,1) memcpy(0x6000,0xc000,0x2000,1) memcpy(0x6000,0xa000,0x2000,1) memcpy(0x6000,0x8000,0x2000,1) end |


(v00 11-10-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #map256x128
To navigate use the arrow keys. Note the 1st and last tile in the map set are blank to show all 32768-tiles are in use.
Hello there.
With extended memory comes extended responsibilities, and one of them is the new ability to reroute the mapper to high memory.
As you know or should you have free RAM located from 0x8000-0xFFFF, a cool 32768-bytes for use.
So what this program does is take advantage of the fact you can now reroute the mapper from default location 0x2000 and instead point it to 0x8000.
Then memory is filled with random numbers 1-4 to show the sample 1-4 tiles.


Hello.
I am working on some code to use the spritesheet as screen memory as detailed in the Pico-8 help:
0X5F54 GFX: can be 0x00 (default) or 0x60 (use the screen memory as the spritesheet) 0X5F55 SCREEN: can be 0x60 (default) or 0x00 (use the spritesheet as screen memory) 0X5F56 MAP: can be 0x20 (default) or 0x10..0x2f, or 0x80 and above. 0X5F57 MAP SIZE: map width. 0 means 256. Defaults to 128. |
Unfortunately map()
does not work in ANY capacity to draw directly into the spritesheet.
@zep, Please have this fixed for next release !
Here is the code:
-- show map() does not work -- for screen/spritesheet swap for i=0,31 do for j=0,31 do mset(j,i,rnd(3)+1) end end cls() -- take your pick, none work! poke(0x5f54,0x00,0x00) --poke(0x5f54,0x00,0x60) --poke(0x5f54,0x60,0x00) --poke(0x5f54,0x60,0x60) cls(1) map() -- copy spritesheet to screen. memcpy(0x6000,0,0x2000) |




(v00 11-09-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #stickybubbles
Hello fellow Piconians !
I was looking at some recent code by others and suddenly realized that we now have OVAL drawing ability ! I did not know this.
Back in GFA I had to use blitter stretch to get this kind of bubble effect. Of course in GFA you also had 24-bit color so I made the bubbles brighter on the edge and darker in the middle so they had a great luminescence about them.
I could do that here I suppose except with 16-colors it won't look so great.
Anyways what =IS= interesting and entertaining is that the bigger bubbles are sti-i-icky and they peel off the bottom of the screen before BOINGING upwards !


(Wow ! Where did the cart go ?)
Because there are idiots in the world. Yep. And I have to write code so that they don't light firecrackers up their nose. SIGH I will return when this program is considerably safer.
(v07 11-08-22)
If you use this cart it is at your own risk cause it's not here for download now.
VVhat's new ?
Hello there !
No, your eyes are not deceiving you. This is indeed NOT a Pico-8 game but a useful utility and one I had need of for quite some time now.
First off giving credit where credit is due, I am making use of @Heracleum's convenient picture to PRINT, especially since it's only 1-color and she is using ONE-OFF to do this. To make use of this utility yourself, go HERE:
https://www.lexaloffle.com/bbs/?tid=49901
Now what does this program do ? Just what it says. It is indeed a utility to help you compress files with 7zip. 7zip if you do not know is a standard and FREE utility to compress files. Some compression can be quite high especially files that are text only. It is also a standard practice to compress programs or games that exceed megabytes for storage.









Hello.

I'm working on a batch utility to merge 7-Zip with Pico-8 and to work with directories outside Pico-8 as I have a need for this, yet I am running into a curious problem.
When I retrieve the directory, I am getting a filename back like:
3-d dOCKING mISSION (1978)(pROGRAMMA iNTERNATIONAL).DSK
@zep, could you please add some options to P8SCII such that I could convert this string line to 4-unique formats:
ORIGINAL:3-d dOCKING mISSION (1978)(pROGRAMMA iNTERNATIONAL).DSK INVERSE :3-D Docking Mission (1978)(Programma International).dsk LOWER :3-d docking mission (1978)(programma international).dsk UPPER :3-D DOCKING MISSION (1978)(PROGRAMMA INTERNATIONAL).DSK FIRSTCAP:3-D Docking Mission (1978)(Programma International).Dsk |
It could be done via: "\c"
followed by O
I
L
U
or F
It would then change the visual case for every character for that single PRINT or string definition line. Once a new string or definition is in place, the effect would not be there.


(v01 11-07-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #mazechallenge
VVhat's new? (11-07-22)
- Fixed blocks so no part of map is missed now. (Please confirm this !)
- Pressing ❎ now has 3-modes. 1, 2, and 3.
- Made maze darker so it is easier to see the player.
- 3rd mode after fill now shows path as darker color of the blocks.
- Greatly sped up fill routine.
- Added notice on end on how to restart.
- Shrank code size slightly.
Hello there.
This is really more of an experiment that I think got way out of hand.
The premise is simple. With all of the tile-generating code out there, I wanted to see if it was possible to make a "maze-like" environment with no 100% straight corridors and using only 4- 8x8 tiles and placed randomly on the board. AND make it so that every point can be reached no matter the arrangement and that it is not a "cake walk" to do so - and there are no hard diagonal lines.


Hello.
I use RND() quite a bit, don't you ?
I have noticed in other game programming languages that you can have a 2nd argument for the rnd() command. Currently Pico-8 does not do this. It's quite useful though. Here's an example:
a=rnd(1,10) |
Will for instance choose an integer random number between and including 1 through 10. This:
a=rnd(10,1) |
Will give the same results. This however:
a=rnd(-4,4) |
Will give you a random integer number between and including -4 to 4.
The function of which:
function rndrange(a,b) if (a>b) a,b=b,a return a+rnd(b-a+1)\1 end |
How about it guys and @zep, do you think this is a good addition for Pico-8, to add a 2nd argument to already existing rnd() function ? Or a new function altogether, rrnd()
for Range Random.





Hello, I hope this is not out of line. I know I opened a topic earlier regarding Fantasy Consoles using 4-bits which started a deep discussion:
https://www.lexaloffle.com/bbs/?tid=31985
So I thought I would bring up another concern of mine. How much can you store in 256-bytes of data ?
"The answer, to life, the universe, and everything !"
Is not 42.
No it's not.
No, in fact it may very well be 256.
I have been giving a lot of thought, most of my life really, to just how much data 256-bytes is. Not just for Pico-8 but in instances regarding philosophy, theology, and mathematics. Permutations involving matching identifications especially.
I am now fully believing that is possible to store an entire universe (or at least the molecular design for a block of cheese), inside the span of 256-bytes of data.
How is this possible ?
Well if we consider that life itself is made up of billions, trillions, of atoms, then isn't it possible that 256-bytes of data is enough to store all that complex information ?










(v00 10-28-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #phoneinput
Hello there !
To try out the code above, use the arrow keys to navigate, the 🅾️ key to select a character and the ❎ key to erase it. For a real challenge try typing out, "NEIGHBOR" as quickly as you can.
Since it may be a-while for Pico-8 to have its own onboard keyboard to let you type in your name for games and stuff, I was thinking of the marvel of a touch-tone telephone and how you can type in a name for instance for speed-dial.
Well it's pretty nifty what it does. On my own real phone for instance:




I mourn the passing of @Xeonic's account in this board.
(SIGH)
Just recently I noticed ALL of her (his) posts, even the very smart and intelligent ones written regarding programming and hardware were utterly deleted because - well, she (he) went thermonuclear.
Folks, we're here to help. If there is a problem, please, let us try to work out with exceptional communication, intelligently, sensibly, and with great forethought and compassion. Please let us not ever have this happen again ...









![]() |
[128x128] |
𝕳𝖊𝖑𝖑𝖔 𝕭𝖔𝖎𝖑𝖘 & 𝕲𝖍𝖔𝖚𝖑𝖘 !
What's that ? You got Halloween on the brain ? Well who wouldn't !
It's that spooky time of year where things go bump in the night and you watch scary movies with popcorn and friends.
So having looked at the many programs of LIFE and how the pixels behave I thought I would one up this and create DEATH. Yep. Truly a creepy decay program, based on GFA code I wrote 20-years ago called "Plague," although there I had true 24-bit color so it was much more colorful and spooky.
(v00 10-20-22) TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #mcaf
(v01 10-20-22)TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #bruteforcepw
Hello.
I was looking at the source-code of @Guest122's program:
https://www.lexaloffle.com/bbs/?pid=119387
To guess someone's password and while his has a dictionary, I did want to point out just how quickly and how unsafe it is to have a small password for instance on one of your internet accounts.
So I wrote this program. What it does is allow you to input a 4-letter word via the regular joystick and then through brute force go from AAAA to ZZZZ to find what your password was, and tell you how long it took to search.


.jpeg)
Hello.
Something good game programming languages have had for a long time is called "Virtual resolution."
For instance with Pico-8 you could have this sprite:
![]() |
[8x8] |
And then this code:
cls() setvirtualresolution(16,16) for i=0,3 do for j=0,3 do spr(1,j,i) end end |
And you would get a perfect set of blocks 4x4 at 8x8-pixels each. No need to multiply by 8 each time.
![]() |
[32x32] |


